The present invention relates to a system and method for executing a high-reliability application and in particular to a system and method of executing a high-reliability application using multiple modules.
Some types of control modules allow for third party applications as well as high-reliability applications to run concurrently. It is typically desirable to have both the third party application as well as the high-reliability applications executed on the same control module in an effort to reduce cost and complexity of the system. For example, a telematics control module executes a high-reliability application such as an airbag emergency application that contacts an emergency call center if an airbag is deployed. The telematics control module also executes a third-party application downloaded from a smartphone. However, sometimes it is difficult to guarantee the high-reliability applications will execute in an emergency condition if a third party application is running at the same time. Therefore, there are several approaches that are currently employed to ensure that the high-reliability applications will execute when needed.
In one approach, the control module is partitioned such that the high-reliability applications are executed on one microcomputer, while the third-party applications are executed on another microcomputer. While this approach allows for the high-reliability applications to execute under all conditions as required, having multiple microcomputers capable of running complex applications can add to the cost and complexity of the system. The cost and complexity of the system can be especially high if the multiple microcomputers share resources.
In an alternative approach, hypervisor technology is implemented in the control module. The high-reliability applications are run on one operating system while the third-party applications are run on another operating system. The hypervisor technology allows for both the operating systems to share a single microprocessor and memory. The hypervisor controls the microprocessor and allocates what is needed for each operating system. However, complications may arise when attempting to debug both of the operating systems.